<?php

namespace View;

class NavigationView
{
	//Privata URL strängar
	private static $Page = "Page";
	private static $TopicID ="TopicID";
	private static $RegisterURL = "RegisterPage";
	private static $NewTopicURL = "NewTopic";
	private static $TopicsAndPostsURL = "TopicsAndPosts";	
	private static $AboutPageURL = "About";	
	
	//Retunerar TRUE om anv befinner sig på registreringssidan, annars FALSE	
	public static function IsViewingRegisterForm()
	{
		if(isset($_GET[self::$Page]) &&
				 $_GET[self::$Page] == self::$RegisterURL)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}

	//Retunerar TRUE om anv befinner sig på sidan för skapande av nytt topic, annars FALSE
	public static function IsViewingNewTopicForm()
	{
		if(isset($_GET[self::$Page]) &&
				 $_GET[self::$Page] == self::$NewTopicURL)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}

	//Retunerar TRUE om anv befinner sig på sidan "My topics and posts", annars FALSE
	public static function IsViewingMyTopicsAndPosts()
	{
		if(isset($_GET[self::$Page]) &&
				 $_GET[self::$Page] == self::$TopicsAndPostsURL)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}

	//Retunerar TRUE om anv befinner sig på About sidan, annars FALSE	
	public static function IsViewingAboutPage()
	{
		if(isset($_GET[self::$Page]) &&
				 $_GET[self::$Page] == self::$AboutPageURL)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}			

	//Retunerar TRUE om anv tittar på ett topic, annars FALSE
	public static function IsViewingTopic()
	{
		if(isset($_GET[self::$TopicID]) == TRUE)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}

	//Hämtar & retunerar topicId från url, annars NULL	
	public static function GetTopicIdFromURL()
	{
		if(isset($_GET[self::$TopicID]) == TRUE)
		{
			return $_GET[self::$TopicID];
		}
		else
		{
			return NULL;
		}
	}				

	//Skapar & retunerar en URL till registreringssidan	
	public static function GetRegisterLink()
	{
		return "?" . self::$Page . "=" . self::$RegisterURL;
	}
	
	//Skapar & retunerar en URL till "New topic" sidan	
	public static function GetNewTopicLink()
	{
		return "?" . self::$Page . "=" . self::$NewTopicURL;		
	}

	//Skapar & retunerar en URL till "My topics and posts" sidan
	public static function GetMyTopicsAndPostsLink()
	{
		return "?" . self::$Page . "=" . self::$TopicsAndPostsURL;		
	}

	//Skapar & retunerar en URL till ett specifikt topic	
	public static function GetTopicLink(\Model\Topic $topic)
	{
		return "?" . self::$TopicID . "=" . $topic->getId();
	}

	//Skapar & retunerar en URL till ett specifikt topic via ett postObjekt	
	public static function GetTopicLinkByPost(\Model\Post $post)
	{
		return "?" . self::$TopicID . "=" . $post->GetTopicId();
	}			

	//Hämtar ett topic objekt via aktuellt TopicID från URL
	public static function GetSelectedTopic(\Model\TopicList $topicList)
	{
		if(isset($_GET[self::$TopicID]) == TRUE)
		{
			$urlId = $_GET[self::$TopicID];
			
			//Försäkrar att id:t är en integer.
			if($urlId != 0 && intval($urlId) == 0)
			{
				throw new \Exception("URL called with invalid format");
			}
			else
			{
				$topicId = intval($urlId);	
				
				return $topicList->getTopic($topicId);
			}

		}
		else
		{
			throw new \Exception("getSelectedTopic was called while not viewing a topic");
		}
		
	}			

	//Redirectar till URL:n för det senast skapade Topic objektet
	public static function RedirectToNewTopic($lastTopicId)
	{
		header('Location:./?'. self::$TopicID .'='.$lastTopicId);
	}

	//Redirectar till URL:n som redan är aktiv	
	public static function RedirectToActiveTopic($topicId)
	{
		header('Location:./' . '?' . self::$TopicID . '=' . $topicId);
	}	
}

?>